import zipfile from '@feidao/web/atom/nodejs/zip/zip';
import * as docx from 'docx';
import { ICommonParams } from '@feidao/service/interfaces';

export default async function atom(msg: ICommonParams, action_id: string, session_id: string, spaceid: string) {

	// 文档地址 https://docx.js.org/#/examples

	/**
	 * 参数
	 * 访问下载地址:http://127.0.0.1:8889/create-docx?id=ceshi&spaceid=webtest
	 * 传入了两个参数
	 */

	// 接收参数
	const query = msg.query;
	const _id = query.id;
	const _spaceid = query.spaceid;

	// 创建docx
	// 设置文件属性
	const opts = {
		title: 'title', // 标题
		subject: 'subject', // 主题
		creator: 'creator', // 创建人
		keywords: 'keywords', // 标记
		description: 'description', // 描述
		lastModifiedBy: 'lastModifiedBy', // 最后一次保存者
		revision: 'revision', // 修订号
		externalStyles: '' // 外部样式 引入之后必须有节点使用此样式
	};

	// 设置页面布局
	const section_opt = {
		width: 500, // 宽
		height: 500, // 高
		orientation: docx.PageOrientation.PORTRAIT, // 文字方向
		// 页边距
		top: 2,
		right: 2,
		bottom: 2,
		left: 2,
		header: 2,
		footer: 2,
		gutter: 2,
		mirror: true
	};
	const doc = new docx.Document(opts, section_opt);


	// 创建段落
	// const paragraph = new docx.Paragraph('这是一段文字');
	// // 添加到document
	// doc.addParagraph(paragraph);

	// // 创建带样式的段落 标题1~标题5
	// /**
	//  * heading1()
	//  * heading2()
	//  * heading3()
	//  * heading4()
	//  * heading5()
	//  */
	// const paragraph_heading = new docx.Paragraph('我是标题1');
	// paragraph_heading.heading1();
	// doc.addParagraph(paragraph_heading);

	// // 创建标题段落
	// const paragraph_title = new docx.Paragraph('我是标题');
	// paragraph_title.title();
	// // 添加到document
	// doc.addParagraph(paragraph_title);

	// // 创建文字对齐段落:中心对齐
	// const paragraph_center = new docx.Paragraph('我是中心对齐的文字');
	// paragraph_center.center();
	// doc.addParagraph(paragraph_center);

	// // 左对齐
	// const paragraph_left = new docx.Paragraph('我是左对齐的文字');
	// paragraph_left.left();
	// doc.addParagraph(paragraph_left);

	// // 右对齐
	// const paragraph_right = new docx.Paragraph('我是右对齐的文字');
	// paragraph_right.right();
	// doc.addParagraph(paragraph_right);

	// // 标题1左对齐
	// const paragraph_c_r = new docx.Paragraph('我是标题1右对齐的文字');
	// // reight()跟heading1() 没有顺序 谁先谁后都行.
	// paragraph_c_r.right().heading1();
	// doc.addParagraph(paragraph_c_r);

	// // 分割线
	// const p_thematicBreak = new docx.Paragraph().thematicBreak();
	// doc.addParagraph(p_thematicBreak);

	const packer = new docx.Packer();
	const res = await (() => {
		return new Promise<Buffer>((resolve, reject) => {
			packer.toBuffer(doc).then(async (buffer) => {
				resolve(buffer);
			});
		});
	})();
	return {
		attachment: 'test.docx',
		buff: res,
		content_type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
	};
}
